# -*- encoding: utf-8 -*-
import django_filters
from django.db.models import Q

from .models import Goods


class GoodsFilter(django_filters.rest_framework.FilterSet):
    """
    商品的过滤类
    """
    price_min = django_filters.NumberFilter(name='shop_price', lookup_expr='gte')  # 过滤区间
    price_max = django_filters.NumberFilter(name='shop_price', lookup_expr='lte')
    # name = django_filters.CharFilter(name='name', lookup_expr='icontains')  # django filter中的模糊查询

    top_category = django_filters.NumberFilter(method='top_category_filter')

    def top_category_filter(self, queryset, name, value):
        return queryset.filter(Q(category_id=value) | Q(category__parent_category_id=value) | Q(
            category__parent_category__parent_category_id=value))

    class Meta:
        model = Goods
        fields = ['price_min', 'price_max', 'top_category', 'is_hot']
